﻿Imports Biz
Imports DAL


''' <summary>
''' Clase de gestión de lógica de negocio para la entidad Busqueda
''' </summary>
''' <remarks></remarks>
Public Class GestorBusqueda

    Private Shared _instance As GestorBusqueda
    Private Shared _semaforo As New Object

    Private _DALBusqueda As DALBusqueda


    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para obtener los datos de un objeto cBusqueda
    ''' </summary>
    ''' <param name="oBusqueda">Objeto de tipo cBusqueda con la identificación del registro buscado</param>
    ''' <returns>Objeto del tipo cBusqueda</returns>
    ''' <remarks></remarks>
    Public Function Buscar(ByVal oBusqueda As cBusqueda) As cBusqueda

        Return _DALBusqueda.Sel(oBusqueda)

    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para consultar la lista de Busquedas
    ''' </summary>
    ''' <returns>Colección de objetos de tipo cBusqueda</returns>
    ''' <remarks></remarks>
    Public Function Consultar() As Collection

        Return _DALBusqueda.SelectAll

    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para insertar una nueva Búsqueda
    ''' </summary>
    ''' <param name="oBusqueda">Objeto de tipo cBusqueda con los datos para el nuevo registro</param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function Ingresar(ByVal oBusqueda As cBusqueda) As Boolean

        Return _DALBusqueda.Insert(oBusqueda)

    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para actualizar una Búsqueda
    ''' </summary>
    ''' <param name="oBusqueda">Objeto de tipo cBusqueda con la identificación del objeto a buscar</param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function Editar(ByVal oBusqueda As cBusqueda) As Boolean

        Return _DALBusqueda.Update(oBusqueda)

    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para eliminar una Búsqueda
    ''' </summary>
    ''' <param name="oBusqueda">Objeto de tipo cBusqueda con la identificación del registro a eliminar</param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function Eliminar(ByVal oBusqueda As cBusqueda) As Boolean

        Return _DALBusqueda.Delete(oBusqueda)

    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para Finalizar una Búsqueda
    ''' </summary>
    ''' <param name="oBusqueda">Objeto de tipo cBusqueda con la identificación del registro a actualizar</param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function Finalizar(ByVal oBusqueda As cBusqueda) As Boolean

        Return _DALBusqueda.Finalizar(oBusqueda)

    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para Suspender una Búsqueda
    ''' </summary>
    ''' <param name="oBusqueda">Objeto de tipo cBusqueda con la identificación del registro a actualizar</param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function Suspender(ByVal oBusqueda As cBusqueda) As Boolean

        Return _DALBusqueda.Suspender(oBusqueda)

    End Function

    ''' <summary>
    ''' Realiza una llamada a la capa de acceso a datos DAL para Activar una Búsqueda
    ''' </summary>
    ''' <param name="oBusqueda">Objeto de tipo cBusqueda con la identificación del registro a actualizar</param>
    ''' <returns>Valor booleano que indica el resultado de la operación</returns>
    ''' <remarks></remarks>
    Public Function Activar(ByVal oBusqueda As cBusqueda) As Boolean

        Return _DALBusqueda.Activar(oBusqueda)

    End Function

    ''' <summary>
    ''' Método estático Instance para exponer una única instancia de la clase GestorBusqueda
    ''' </summary>
    ''' <returns>Unica instancia de la clase GestsorBusqueda</returns>
    ''' <remarks></remarks>
    Public Shared Function Instance() As GestorBusqueda
        If _instance Is Nothing Then
            SyncLock (_semaforo)
                If _instance Is Nothing Then
                    _instance = New GestorBusqueda
                End If
            End SyncLock
        End If

        Return _instance
    End Function

    Private Sub New()
        _DALBusqueda = DALBusqueda.Instance
    End Sub

End Class
